package com.farmer.project.service;

import com.farmer.common.entity.Project;
import com.farmer.common.result.Result;
import com.farmer.project.dto.DonationDTO;

/**
 * 扶贫项目服务接口
 */
public interface ProjectService {

    /**
     * 获取扶贫项目列表
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @param status 项目状态
     * @param keyword 搜索关键词
     * @return 项目列表
     */
    Result<?> getProjectList(Integer pageNum, Integer pageSize, String status, String keyword);

    /**
     * 根据ID获取项目详情
     * @param projectId 项目ID
     * @return 项目详情
     */
    Result<?> getProjectById(Long projectId);

    /**
     * 添加扶贫项目
     * @param project 项目信息
     * @return 添加结果
     */
    Result<?> addProject(Project project);

    /**
     * 更新项目信息
     * @param project 项目信息
     * @return 更新结果
     */
    Result<?> updateProject(Project project);

    /**
     * 项目捐赠
     * @param donationDTO 捐赠信息
     * @return 捐赠结果
     */
    Result<?> donateToProject(DonationDTO donationDTO);

    /**
     * 获取项目捐赠记录
     * @param projectId 项目ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 捐赠记录列表
     */
    Result<?> getDonationList(Long projectId, Integer pageNum, Integer pageSize);

    /**
     * 获取用户捐赠记录
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 用户捐赠记录
     */
    Result<?> getUserDonationList(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 获取项目统计信息
     * @return 统计信息
     */
    Result<?> getProjectStatistics();

    Result<?> deleteProjectById(Long projectId);
} 